# Redli - a humane alternative to redis-cli





### Справка по архитектуре сервиса
Особенностью приложения является то, что каждый сервис знает **всё** или почти всё про модели друг друга.
Это даёт возможность построения микросервисного приложения с простым по реализации фронтом.

Обращение к модели идёт с помощью env.

[Env](/app/bff/bff_server.py) содержит в себе все модели всех приложений и адаптеры к ним.


#### Adapter 
[Adapter](/app/bff/adapters/basic_adapter.py) - это общедоступные операции, предоставляемые конкретным приложением для других. Является RPC-методом, клиент не знает об http-запросах.
#### Service
[Service](/app/basic/company/services/company_service.py) - это служба, реализующая бизнес-функции, как правило, над объектами. Используется только внутри приложения.

#### Api
[Api](/app/basic/company/api) - это точка входа для http, как правило, вызывается через адаптер.

#### Schemas
[Schemas](/app/basic/company/schemas) для CRUD операций + Filter, используется в основном для фронта.

#### Models
[Models](/app/basic/company/models) - хранимая табличка в базе данных в терминах SQLAlchemy.


То есть каждый сервис устроен так:
- model_scope_1 (модуль приложения)
    - api
    - services
    - schemas 
    - models
  
[//]: # (    ... permissions...)
- model_scope_2

  - ...